Apple // Game Server

Play the classics on your Woz machine without a floppy disk!
  • Home
  • Status
  • Getting Started
  • FAQ
  • Download
  • Technical Details
  • Project Home
  • donate!
  • Basics
  • Java Errors
  • Basics

    • I can't find what I'm looking for in this FAQ.  What do I do now?
      • Go to the forums associated with this project.  Follow the "Project Home" link above and there you should be able to find the project forums.  Either myself or other folks will be more than happy to try to help.
    • Does this support disk images used in emulators? (e.g. .dsk, .do, .po files)
      • Not yet.  Support for standard dos 3.3 disks is about 2/3 finished.  See the status page for progress updates on this subject.  Right now only games contained in single files work because they require no interaction with the disk drive while running.
    • How does this work exactly?
      • See the "Technical Details" section for a better understanding of the inner workings.
    • Why java?  Why not C/C++/Pyton/Delphi?
      • Because I don't like answering the question "When will you support [*nix | mac | win32 | ...]".  Second to that, Java is what I use on a daily basis so my familiarity with it allows me to rapidly add new features.
      • Java is free and is already ported to many platforms, and as such it allows you to write cross-platform code that is both simple and elegant.  Not that I want to knock Mono here, but I'm not interested in learning a java variant when I can use the real deal, and I have a strong dislike for C/C++.
    • How do I add/remove games to the list?
      • Easy!  In the lib/data directory you'll find a file named games.xml.  This file contains information about all games in the lib/data/games subdirectory.  The game file names have a specific pattern inherited from the CiderPress tool -- though the actual file names really don't matter because the information is captured in XML. The file pattern is NNNNNN#TTAAAA where N is a shortened game name without spaces,  TT is the two-digit hexidecimal file type code (06 = binary, FC = basic) and AAAA is the four-digit starting address where the file should be loaded in the apple's main memory.  Likewise, these values are also stored in the xml file.  As this xml format grows, it will be described in the Technical Details section.
    • Why do some games have an exclamation mark (!) in front of their names?
      • Because those games were tested and deemed not working.  So it's a warning to the user.  For now, when you try to play one of these games it will still try to load the game, but instead of starting it directly it will ask you to press ctrl-reset to start it once it is loaded.  This is so the apple firmware might reset other unknowns first.  It may or may not work but I figure it's better than nothing.
    • Why should I donate?
      • Ultimately, this should be a personal decision you make for yourself.  I'm not going to tell you one way or another if you should.  However, please know that any donations received will help me obtain equipment and other retro gear so I can do additional testing and start other homebrew projects in the future.  I'm not starving, but due to personal circumstances I have zero budget for non-discressionary spending at this point in time so it really helps in that sense.  It's also a form of encouragement that the long sleepless hours are worth it to someone out there.  :-)
    • I can't donate money but I would like to help.  What can I do?
      • Hardware donations are greatly appreciated.  A //c+, Laser 128ex, eeprom burner, or a working dev board (ARM, Spartan FGPA, PIC -- I'm not picky) would be nice.  A CFFA would be beyond cool, but beggers can and will not be choosers in this case.  (however, I can think of several things I will not be able to get much use out of, so let's talk about it first -- email me at brendan.robert[at]gmail.[remove_this]com)
      • I included over 200 games with this program and can't play them all.  Also I can't test the ones that require a joystick because I no joystick (does this make me less of a man?)  So if you encounter a game that doesn't work, please post about it on the forums so that hopefully it can be fixed or at least diagnosed.
      • If you have an unenhanced //e, ][+ or //gs, I would like if you could give this a shot on those computers and let me know how it goes.  Again, post your findings on the forum -- it will help others who might run in to the same issues.
    • What's the point of this project?  Why are you doing this?  Don't you have better things to do?
      • Greetings, non-geek reader.  (a real geek would never bother with such questions. You so-called "normal" people know who you are ;-)  The main goal is to play old retro apple games on actual retro apple hardware without using floppy disks.  Mostly because I don't trust floppies, especially floppies that are old enough to legally buy alcohol and vote.
      • AppleWin and Kegs, among other emulators, are truly badass and more advanced that we could ever hope for.  These projects are still being actively improved each month.  However, emulators will never be 100% exact replications of hardware.  As such, some games don't look exactly right or play as well as they do on hardware (e.g. money munchers by Bob Bishop).  By all means, if your favorite game works in AppleWin already and you'e happy with that then good for you.  Enjoy it.  Let the AppleWin folks know what doesn't work (beyond that which they already know about like mouse support, true SSC support and cycle-accurate video display -- the bug list is growing smaller and smaller and we're very fortunate for that.)
      • Finally, there's a good ol' nostalgic feel having a //e hooked up to the TV with the way-too-loud internal speaker blaring the moon patrol theme.  Either you dig it, or you don't.  ;-)

    Java Errors

    • "java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path"
      • This means you did not add the lib directory to java's classpath.  You can do so either by modifying the command-line syntax of how you are calling java (preferred method), or you can modify your environment variables to include the path.
      • It is also possible that you have already added the lib directory to the classpath, but have not downloaded the approriate binary distribution of RXTX for your platform and placed the files in there yet.  The binary and lib releases of A2GameServer only include the win32 libraries.
    • "Port X already in use" or "Port is not available"
      • Either you picked the wrong serial port, you have another instance of this program running already, or something else is holding that resource and won't let go of it.  An extreme situation I encountered was that I'm using a non-standard usb based serial port, which uses its own driver rather than the standard Windows one.  When I enabled hardware flow control (in an older version of the code that didn't respect the rules of flow control), the java program froze in a deadlock.  I couldn't force-quit the java program either.  In fact, I couldn't even shut down without holding down the power button for 5 seconds!  Also, whenever I tried to start the program again (before rebooting) I got the message that the port was already in use.  If you are sure you're using the right port and no other serial-based programs are running, try to use another terminal program to use that port.
    • "Cannot write X", "Expected X but timed out"
      • This is because echo-check mode is enabled but the java program is likely not receiving data back from the apple.  If you enable echo-check (!echo true in the init script) then you must ensure the apple is sending data to the PC (type pr#2 and test in a com program) -- you can either disable the echo-check mode (not recommended) or enable echo on the apple by typing this on the apple after IN#2:
        • Ctrl-A (should then see a special prompt) 2S
      • Note: The //c echoes received data to the serial port by default, whereas the SSC does not.
    • "Expected X but got Y"
      • The init or driver script have echo feedback mode enabled but is not receiving data back from the apple for some reason.  This could be because of a difference in baud rate settings, or possible also that the apple is not set for 8 data bits, No parity and 1 stop bit.
    • "Timed out waiting to send data to remote host!"
      • This can only happen when hardware flow control is enabled.  Make sure the apple needs flow control.  Try !flow XON or !flow NONE as alternatives if necessary.
    • "Failed to get response from driver after 3 retries"
      • If echo-check mode is disabled (set by adding !echo false in the init.txt script) then this means the apple was never able to receive data well enough to start up the serial driver program.  Check you can communicate with the apple using a regular serial communication program.
      • If the apple appears to be receiving data, check that the last line is 300g and not 30g.  I've seen this last line get mangled a few times randomly.  If you're quick on the draw, quickly type ctrl-x 300g (enter) before the java program completely gives up.